package com.youth.oauth.controller;

import com.youth.oauth.commons.beans.Result;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class HelloController {

    /**
     * 用户登录后可以访问
     * @return
     */
    @GetMapping("test1")
    public Result test1() {
        return Result.ok("test1");
    }

    /**
     * 拥有CFO 角色的，可以访问
     * @return
     */
    @PreAuthorize(value = "hasRole('CFO')")
    @GetMapping("test2")
    public Result test2() {
        return Result.ok("test2");
    }

    /**
     * 拥有 ADMIN 角色的，可以访问
     * @return
     */
    @PreAuthorize(value = "hasRole('ADMIN')")
    @GetMapping("test3")
    public Result test3() {
        return Result.ok("test3");
    }

    /**
     * 拥有 ADMin 和 CEO 角色的，均可以访问
     * @return
     */
    @PreAuthorize(value = "hasRole('ADMIN') and hasRole('CEO')")
    @GetMapping("test4")
    public Result test4() {
        return Result.ok("test4");
    }


    /**
     * 包含 admin 或者 CEO 角色的，均可以访问
     * @return
     */
    @PreAuthorize(value = "hasAnyRole('ADMIN', 'CEO')")
    @GetMapping("test5")
    public Result test5() {
        return Result.ok("test5");
    }


    /**
     * 拥有 user:edit 权限的，可以访问
     * @return
     */
    @PreAuthorize(value = "hasAuthority('user:edit')")
    @GetMapping("test6")
    public Result test6() {
        return Result.ok("test6");
    }

    /**
     * 拥有 user:del 或者 add 权限的，可以访问
     * @return
     */
    @PreAuthorize(value = "hasAnyAuthority('user:del', 'add')")
    @GetMapping("test7")
    public Result test7() {
        return Result.ok("test7");
    }

    /**
     * 拥有 user:edit 和 user:del 权限的，可以访问
     * @return
     */
    @PreAuthorize(value = "hasAuthority('user:edit') and hasAnyAuthority('user:del')")
    @GetMapping("test8")
    public Result test8() {
        return Result.ok("test8");
    }

}
